package com.econ.powercloud.ems.config;

import com.econ.powercloud.ems.dal.entity.*;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;

import java.util.List;
import java.util.Map;

public class EMSStaticMap {

    /**
     * 存放计算数据的类型存储
     * key: computeCode,value:计算点号类型(ComplexEnums)
     */
    public static Map<String,Integer> calComputeToComplexType = Maps.newConcurrentMap();

    /**
     * 受益报表 储能装置日报表表头
     * list中的数据表示的是 与前端表格中对应的 prop
     */
    public static List<String> incomeDayReportHead = Lists.newCopyOnWriteArrayList();

    /**
     * 电费结算确认表表头
     * list中的数据表示的是 与前端表格中对应的 prop
     */
    public static List<String> feeConfirmReportHead = Lists.newCopyOnWriteArrayList();

    /**
     * 存放已产品维度下的遥信故障的点号有哪些
     * 这些点号可以从iot_product_yx_sync中获取
     * 第一个key: productKey,第二个key:dit, value: 故障告警类型(见AlarmOrFaultState枚举)
     */
    public static Map<String,Map<String,Integer>> faultDitMap = Maps.newConcurrentMap();

    /**
     * 存放ems_device中数据
     * key: initDeviceCode + "." + moduleCode, value: emsDevice类(这里一般可以为最顶层的数据)
     */
    public static Map<String, EmsDevice> moduleCodeToDeviceMap = Maps.newConcurrentMap();

    /**
     * 保护事件/SOE事件的事件pid
     */
    public static Map<String,EmsProtectSoePidConfig> protectSoePidConfigMap = Maps.newConcurrentMap();

    /**
     * 保护事件断面数据配置信息
     * key: initDeviceCode, value:断面数据配置信息
     */
    public static Map<String,List<EmsProtectSectionConfig>> protectSectionConfigMap = Maps.newConcurrentMap();

    /**
     * 保护事件/SOE事件关于相别/动作类别/SOE事件对应值的中文配置
     * 第一个：key: initDevice, 第一个key:EmsProtectSoeConfig中的 type + "-" + val, value: EmsProtectSoeConfig
     */
    public static Map<String,Map<String, EmsProtectSoeConfig>> protectSoeConfigMap = Maps.newConcurrentMap();

    /**
     * 存放诊断预警中的涉及的点号有哪些
     */
    public static List<String> emsWarnConfigPid = Lists.newCopyOnWriteArrayList();

    /**
     * yc_yx_strategy_config缓存
     */
    public static Map<String, List<EmsAdditionalOperationConfig>> emsYcYxStrategyConfigMap = Maps.newConcurrentMap();
}
